﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessEntity
{
    /// <summary>
    /// Entidade de negocio DescontoDiferenciado
    /// </summary>
    public class DescontoDiferenciado : BaseBusinessEntity
    {
        #region Campos

        /// <summary>
        /// Codigo da tabela de corretagem
        /// </summary>
        private int? _codigoTabela;

        /// <summary>
        /// Campo _tipoDesconto
        /// </summary>
        private BusinessEntity.TipoDescontoDiferenciado _tipoDesconto;

        /// <summary>
        /// Campo _percentual
        /// </summary>
        private decimal? _percentual;

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor DescontoDiferenciado
        /// </summary>
        public DescontoDiferenciado()
        {
            this._tipoDesconto = new BusinessEntity.TipoDescontoDiferenciado();
        }

        /// <summary>
        /// Construtor DescontoDiferenciado
        /// </summary>
        /// <param name="codigoTabela">Código Tabela</param>
        /// <param name="tipoDesconto">Tipo Desconto</param>
        /// <param name="percentual">Percentual</param>
        public DescontoDiferenciado(int? codigoTabela, BusinessEntity.TipoDescontoDiferenciado tipoDesconto, decimal? percentual) : this()
        {
            this._codigoTabela = codigoTabela;
            this._tipoDesconto = tipoDesconto;
            this._percentual = percentual;
        }

        #endregion

        #region Propriedades

        /// <summary>
        /// Propriedade CodigoTabelaPadrao
        /// </summary>
        [NotNull(109366)]
        public int? CodigoTabela
        {
            get { return this._codigoTabela; }
            set { this._codigoTabela = value; }
        }

        /// <summary>
        /// Propriedade TipoDescontoDiferenciado
        /// </summary>
        public BusinessEntity.TipoDescontoDiferenciado TipoDesconto
        {
            get { return this._tipoDesconto; }
            set { this._tipoDesconto = value; }
        }

        /// <summary>
        /// Propriedade Percentual
        /// </summary>
        public decimal? Percentual
        {
            get { return this._percentual; }
            set { this._percentual = value; }
        }

        #endregion
    }
}

